perm filename PAT[NET,KMC] blob sn#142409 filedate 1975-01-25 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	
C00007 ENDMK
C⊗;

% THIS IS A PROGRAM NEEDED BY 'PAT'.  TO RECONSTRUCT THE DOCJOB CORE IMAGE:

	.R MLISPC					( TRANSLATE DOCJOB )
	*(MLISP DOCJOB NIL)
	*↑C

	.R LISP 16					( READ IN THE LSP CODE )
	ALLOC? Y
	FULL WDS=2000_					( _ MEANS <SPACE> )
	BIN.PROG.SP=2600_
	SPEC.PDL=_
	REG. PDL=_
	HASH=_
	*(DSKIN (DOC.LSP)  SYS: UTILS)
	*(MAIL_INIT)
	*(INITFN (QUOTE RESTART))
	*↑C
	.SAVE DOCJOB

TO RUN THE PROGRAM, TYPE
	.RUN DOCJOB[4,KMC]
%


BEGIN

NEW	FILEAREA,INFILE,OUTFILE;
SPECIAL	FILEAREA,INFILE,OUTFILE,MESSNO;

EXPR ERROR(L);  PRINT(L);

EXPR LPRINT(L);  MAPC('PRINC,REVERSE(L));

EXPR SENDMESS(L);
	BEGIN NEW A,CHAN;
	A←ERRSET( CHAN←EVAL< 'OUTPUT,FILEAREA,OUTFILE >, NIL);
	IF ¬A THEN ERROR("CANT SEND OUTPUT") ALSO EXIT();
	OUTC(CHAN,NIL);
	MESSNO←MESSNO+1;  PRINT MESSNO; PRINT L;
	OUTC(NIL,T);
	END;

EXPR WAITONMESS(N,FLAG);
	BEGIN NEW A;
	WHILE ¬A←MAILIN(N) DO BEGIN
		IF FLAG THEN PRINTSTR("WAITING...");
		SLEEP(10);
		END;
	RETURN A;
	END;

EXPR MAILIN(N);
	BEGIN NEW A,CHAN;
	A←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,INFILE >, NIL);
	IF ¬A THEN RETURN NIL;
	INC(CHAN,NIL);
	A←READ(); IF ¬(A=N) THEN INC(NIL,T) ALSO RETURN NIL;
	A←READ();
	INC(NIL,T);
	RETURN A;
	END;

EXPR CHECKMAIL();
	BEGIN NEW A,B,C,D,CHAN;
	A←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,INFILE >, NIL);
	IF ¬A THEN ERROR( "CANT RESTART -- FILE WAS DELETED" );
	INC(CHAN,NIL); 	A←READ(); B←READ(); INC(NIL,T);
	C←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,OUTFILE >, NIL);
	IF ¬C THEN ERROR( "CANT RESTART -- FILE WAS DELETED" );
	INC(CHAN,NIL); 	C←READ(); D←READ(); INC(NIL,T);
	RETURN <A,B,C,D>;
	END;
EXPR SLEEP(N); SLEEP2(N);

EXPR SLEEP2(N);
	FOR I←1 TO N BY 1 DO PRINT(I);


EXPR RUN();
	BEGIN NEW A,RESTART,CH,L;
	FILEAREA←'(NET KMC); INFILE←'OUT; OUTFILE←'IN;
	MESSNO←0;

	PRINC("ARE YOU STARTING A CONVERSATION
 OR RESTARTING AFTER A SYSTEM CRASH?[S OR R]");
	RESTART←READ();   RESTART←¬(RESTART='S);

	IF ¬RESTART THEN BEGIN
PRINTSTR "
IF THE SYSTEM GOES DOWN,
YOU MAY HAVE TO RETYPE YOUR LAST QUESTION.
WE WILL BE READY TO GO IN A MINUTE.
";

	A←WAITONMESS(1,T);
	IF ¬(A EQUAL '(RRRRREADY)) THEN ERROR("INITIALIZATION NO GOOD");
	SENDMESS( '(RRRRREADY) );
PRINTSTR "

END INPUT WITH TWO ALTMODES.
";
	END
	ELSE %RESTART ROUTINE%  BEGIN
	  L←CHECKMAIL();
	  IF CAR L=CADDR L THEN PRINTSTR "LAST OUTPUT: " ALSO LPRINT(CADDDR L)
		ALSO PRINTSTR "WAITING..."  ALSO RESTART←NIL
		ELSE PRINTSTR "LAST INPUT: " ALSO LPRINT(CADR L);
	  MESSNO←CADDR L;
	  END;

	WHILE T DO BEGIN

	IF ¬RESTART THEN BEGIN
	 L←WAITONMESS(MESSNO+1,NIL);	
	 TERPRI NIL;
	 PRINTSTR "INTERVIEWER:";
	 LPRINT(L);
	 END;
	RESTART←NIL;
	
	TERPRI TERPRI NIL; L←NIL;
	PRINTSTR "READY:";
	DO NIL UNTIL (CH ← READCH()) NEQ CR & CH NEQ LF & CH NEQ ALTMODE;
	TERPRI DO L ← CH CONS L UNTIL (CH ← READCH()) EQ ALTMODE & (CH ← READCH()) EQ ALTMODE;

	SENDMESS(L);
	END;

	END;

RUN();
END.